package brainslug.flow.execution.node.task; import brainslug.TestService; import brainslug.flow.context.BrainslugExecutionContext; import brainslug.flow.context.ExecutionContext; import brainslug.flow.context.HashMapRegistry; import brainslug.flow.context.Trigger; import brainslug.flow.execution.property.NumberProperty; import brainslug.flow.execution.instance.FlowInstance; import brainslug.flow.node.task.TaskScript; import org.junit.Test; import javax.script.ScriptEngineManager; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; public class ScriptExecutorTest { HashMapRegistry registry = new HashMapRegistry(); TestService testService = mock(TestService.class); FlowInstance instance = mock(FlowInstance.class); @Test public void shouldExecuteScript() { // given: TaskScript taskJavaScript = new TaskScript("JavaScript", testScript()); ExecutionContext executionContext = testContext(); // when: new ScriptExecutor(new ScriptEngineManager()).execute(taskJavaScript, executionContext); // then: verify(testService).echo("js"); NumberProperty<?> barProperty = (NumberProperty<?>) executionContext.getProperties().get("bar"); assertThat(barProperty.getValue().intValue()).isEqualTo(2); } private String testScript() { return "brainslug.service('test').echo('js');" + "brainslug.setProperty('bar', 2);"; } ExecutionContext testContext() { registry.registerService("test", testService); Trigger trigger = new Trigger(); return new BrainslugExecutionContext(instance, trigger, registry); } }